<?php
/*
 *
 * Класс предназначен для управления всеми сущностями метаинформации.
 * Объекты класса являются контейнерами для классов узлов метаинформационной схемы.
 * Позволяет выполнять преобразование PHP-объектов из внутреннего хранилища в XML-код схемы метаинформации.
 *
 */
class Metadata
{
    private $version = "1";
    private $xsd = "MetaXmlSchema.xsd";
    private $classes = array();

    /*
     * Добавить объект MetadataClass во внутреннее хранилище классов.
     */
    public function addClass(MetadataClass $class)
    {
        $this->classes[] = $class;
    }
    /*
     * Очистить внутреннее хранилище классов.
     */
    public function removeAllClasses()
    {
        $this->classes = array();
    }
    /*
     * Получить содержимое хранилища классов.
     */
    public function getClasses()
    {
        return $this->classes;
    }
    /*
     * Получить текущую версию формата метаинформации, используемую в объектах класса.
     */
    public function getVersion()
    {
        return $this->version;
    }
    /*
     * Создать XML по данным, содержащимся во внутреннем хранилище классов.
     */
    public function createXml()
    {
        
    }
    /*
     * Импортировать XML схему классов объектов.
     * Проверить на соответсвие XSD текущей версии.
     */
    public function importMetaXml($filename)
    {
        if(!is_file($filename)) throw  new NotFoundXmlMetadata ('Файл с метаданными не найден по адресу: '.$filename);

        $Dom = new DOMDocument();
        $Dom->load($filename);

        $Dom->schemaValidate($this->xsd);
    }
}




?>
